package queenb.web.util;
public class AmountInWords {

    
      String[] unitdo ={"", " một", " hai", " ba", " bốn", " năm",
         " sáu", " bảy", " tám "," chín", " mười", " mười một", " mười hai",
         " mười ba", " mười bốn", " mười lăm",  " mười sáu", " mười bảy", 
         " mười tám", " mười chín"};
      String[] tens =  {"", "Mười", " Hai mươi", " Ba mươi", " bốn mươi", " năm mươi",
         " sáu mươi", " bảy mươi", " tám mươi"," chín mươi"};
      String[] digit = {"", " chục", " ngàn", " triệu", " trăm", " Tỉ","mươi triệu"};
     int r;


      //Count the number of digits in the input number
      int numberCount(int num)
      {
          int cnt=0;

          while (num>0)
          {
            r = num%10;
            cnt++;
            num = num / 10;
          }

            return cnt;
      }


      //Function for Conversion of two digit

      String twonum(int numq)
      {
           int numr, nq;
           String ltr="";

           nq = numq / 10;
           numr = numq % 10;

           if (numq>19)
             {
           ltr=ltr+tens[nq]+unitdo[numr];
             }
           else
             {
           ltr = ltr+unitdo[numq];
             }

           return ltr;
      }

      //Function for Conversion of three digit

      String threenum(int numq)
      {
             int numr, nq;
             String ltr = "";

             nq = numq / 100;
             numr = numq % 100;

             if (numr == 0)
              {
              ltr = ltr + unitdo[nq]+digit[1];
               }
             else
              {
              ltr = ltr +unitdo[nq]+digit[1]+twonum(numr);
              }
             return ltr;

      }


      public static void main(String[] args) throws Exception
      {

          //Defining variables q is quotient, r is remainder

          int len, q=0, r=0;
          String ltr = " ";
          String Str = "";
         AmountInWords n = new AmountInWords();
          int num = 22630000;

          if (num <= 0) System.out.println("Zero or Negative number not for conversion");

          while (num>0)
          {

             len = n.numberCount(num);
             System.out.println("-------LEN---"+len);
             //Take the length of the number and do letter conversion

             switch (len)

             {
                  case 9:
                          q=num/100000000;
                          r=num%100000000;
                          ltr = n.twonum(q);
                          Str = Str+ltr+n.digit[5];
                          num = r;
                          break;
                  case 8:
                          q=num/10000000;
                          System.out.println("-----Q--"+q);
                          
                          r=num%10000000;
                          System.out.println("-----Q--"+r);
                          ltr = n.twonum(q);
                          System.out.println("-----Q--"+ltr);
                         
                          if(q==1){
                               Str = "Mười"+n.digit[3];
                          }else{
                              Str = Str+ltr+n.digit[6];
                          }
                          System.out.println("-----Q--"+Str);
                          num = r;
                          System.out.println("-----Q--"+num);
                          break;

                  case 7:
                      q=num/1000000;
                          r=num%1000000;
                          ltr = n.twonum(q);
                          Str = Str+ltr+n.digit[3];
                          num = r;
                          break;
                  case 6:
                          q=num/100000;
                          r=num%100000;
                          ltr = n.twonum(q);
                          Str = Str+ltr+n.digit[3];
                          num = r;
                          break;

                  case 5:
                  case 4:

                           q=num/1000;
                           r=num%1000;
                           ltr = n.twonum(q);
                           Str= Str+ltr+n.digit[2];
                           num = r;
                           break;

                  case 3:


                            if (len == 3)
                                r = num;
                            ltr = n.threenum(r);
                            Str = Str + ltr;
                            num = 0;
                            break;

                  case 2:

                           ltr = n.twonum(num);
                           Str = Str + ltr;
                           num=0;
                           break;

                  case 1:
                           Str = Str + n.unitdo[num];
                           num=0;
                           break;
                  default:

                          num=0;
                          System.out.println("Exceeding Crore....No conversion");
                          System.exit(1);


              }
                          if (num==0)
                          System.out.println(Str+" đồng");
            }

         }

      }

